package com.java.main.exception;

import com.java.main.constant.Errors;

/**
 * <pre>
 * 业务异常，处理业务抛出的异常
 * 错误码和错误码说明，需要指定
 * </pre>
 */
public class HiBabyGlobalException extends RuntimeException {

	private static final long serialVersionUID = 5280532178592529312L;

	/**
	 * 错误码
	 */
	private int code = Errors.SYSTEM_ERROR.code;
	/**
	 * 错误码的说明
	 */
	private String label = Errors.SYSTEM_ERROR.label;

	private Errors errors;

	public HiBabyGlobalException() {
		super();
	}

	public HiBabyGlobalException(String codeLabel) {
		super(codeLabel);
		setCode(code);
		setLabel(codeLabel);
	}

	/**
	 * 构造函数
	 * 
	 * @param code：错误码
	 * @param codeLabel：错误码说明
	 */
	public HiBabyGlobalException(int code, String codeLabel) {
		super(codeLabel);
		setCode(code);
		setLabel(codeLabel);
	}

	/**
	 * 构造函数
	 * 
	 * @param code：错误码
	 * @param codeLabel：错误码说明
	 * @param message：异常说明
	 */
	public HiBabyGlobalException(int code, String codeLabel, String message) {
		super(message);
		setCode(code);
		setLabel(codeLabel);
	}

	/**
	 * 构造函数
	 * 
	 * @param code：错误码
	 * @param codeLabel：错误码说明
	 * @param message：异常说明
	 * @param cause
	 */
	public HiBabyGlobalException(int code, String codeLabel, String message, Throwable cause) {
		super(message, cause);
		setCode(code);
		setLabel(codeLabel);
	}

	/**
	 * 构造函数
	 * 
	 * @param error：错误码
	 */
	public HiBabyGlobalException(Errors error) {
		super(error.label);
		this.errors = error;
		setCode(error.code);
		setLabel(error.label);
	}

	/**
	 * 构造函数
	 * 
	 * @param error：错误码
	 * @param message：异常说明
	 */
	public HiBabyGlobalException(Errors error, String message) {
		super(message);
		this.errors = error;
		setCode(error.code);
		setLabel(message);
	}

	/**
	 * 构造函数
	 * 
	 * @param error：错误码
	 * @param message：异常说明
	 * @param cause
	 */
	public HiBabyGlobalException(Errors error, String message, Throwable cause) {
		super(message, cause);
		setCode(error.code);
		setLabel(error.label);
	}

	public int getCode() {
		return code;
	}

	public void setCode(int code) {
		this.code = code;
	}

	public String getLabel() {
		return label;
	}

	public void setLabel(String label) {
		this.label = label;
	}

	public Errors getErrors() {
		return errors;
	}

}
